%% 第一章：绪论 - 主仿真脚本
% 无线通信系统发展历程和关键技术概述
% 作者：周勇
% 日期：2024年

clc;
clear all;
close all;

%% 1.1 移动通信系统的发展
fprintf('=== 移动通信系统发展历程 ===\n');

% 调用移动通信发展历程函数
results_evolution = mobile_communication_evolution('show_plots', true, 'save_results', true);

%% 1.2 通信系统关键技术
fprintf('\n=== 通信系统关键技术 ===\n');

% 调用关键技术概述函数
results_tech = key_technologies_overview('show_plots', true, 'save_results', true);

%% 无线通信系统基本架构
fprintf('\n=== 无线通信系统基本架构 ===\n');

% 绘制无线通信系统基本架构
fig_architecture = figure('Name', '无线通信系统架构', 'Position', [250, 250, 1400, 600]);
axis off;

% 定义模块位置
modules = struct(...
    'Source', [0.1, 0.7, 0.15, 0.15], ...
    'SourceEncoder', [0.3, 0.7, 0.15, 0.15], ...
    'ChannelEncoder', [0.5, 0.7, 0.15, 0.15], ...
    'Modulator', [0.7, 0.7, 0.15, 0.15], ...
    'WirelessChannel', [0.1, 0.3, 0.8, 0.15], ...
    'Demodulator', [0.1, 0.1, 0.15, 0.15], ...
    'ChannelDecoder', [0.3, 0.1, 0.15, 0.15], ...
    'SourceDecoder', [0.5, 0.1, 0.15, 0.15], ...
    'Destination', [0.7, 0.1, 0.15, 0.15]);

% 绘制发送端模块
rectangle('Position', modules.Source, 'FaceColor', [0.8, 0.9, 1], 'EdgeColor', 'b');
text(modules.Source(1)+modules.Source(3)/2, modules.Source(2)+modules.Source(4)/2, '信源', ...
    'HorizontalAlignment', 'center', 'FontSize', 12, 'FontWeight', 'bold');

rectangle('Position', modules.SourceEncoder, 'FaceColor', [0.8, 0.9, 1], 'EdgeColor', 'b');
text(modules.SourceEncoder(1)+modules.SourceEncoder(3)/2, modules.SourceEncoder(2)+modules.SourceEncoder(4)/2, '信源编码', ...
    'HorizontalAlignment', 'center', 'FontSize', 12, 'FontWeight', 'bold');

rectangle('Position', modules.ChannelEncoder, 'FaceColor', [0.8, 0.9, 1], 'EdgeColor', 'b');
text(modules.ChannelEncoder(1)+modules.ChannelEncoder(3)/2, modules.ChannelEncoder(2)+modules.ChannelEncoder(4)/2, '信道编码', ...
    'HorizontalAlignment', 'center', 'FontSize', 12, 'FontWeight', 'bold');

rectangle('Position', modules.Modulator, 'FaceColor', [0.8, 0.9, 1], 'EdgeColor', 'b');
text(modules.Modulator(1)+modules.Modulator(3)/2, modules.Modulator(2)+modules.Modulator(4)/2, '调制器', ...
    'HorizontalAlignment', 'center', 'FontSize', 12, 'FontWeight', 'bold');

% 绘制无线信道
rectangle('Position', modules.WirelessChannel, 'FaceColor', [1, 0.9, 0.8], 'EdgeColor', 'r');
text(modules.WirelessChannel(1)+modules.WirelessChannel(3)/2, modules.WirelessChannel(2)+modules.WirelessChannel(4)/2, '无线信道', ...
    'HorizontalAlignment', 'center', 'FontSize', 14, 'FontWeight', 'bold', 'Color', 'r');

% 绘制接收端模块
rectangle('Position', modules.Demodulator, 'FaceColor', [0.9, 1, 0.8], 'EdgeColor', 'g');
text(modules.Demodulator(1)+modules.Demodulator(3)/2, modules.Demodulator(2)+modules.Demodulator(4)/2, '解调器', ...
    'HorizontalAlignment', 'center', 'FontSize', 12, 'FontWeight', 'bold');

rectangle('Position', modules.ChannelDecoder, 'FaceColor', [0.9, 1, 0.8], 'EdgeColor', 'g');
text(modules.ChannelDecoder(1)+modules.ChannelDecoder(3)/2, modules.ChannelDecoder(2)+modules.ChannelDecoder(4)/2, '信道译码', ...
    'HorizontalAlignment', 'center', 'FontSize', 12, 'FontWeight', 'bold');

rectangle('Position', modules.SourceDecoder, 'FaceColor', [0.9, 1, 0.8], 'EdgeColor', 'g');
text(modules.SourceDecoder(1)+modules.SourceDecoder(3)/2, modules.SourceDecoder(2)+modules.SourceDecoder(4)/2, '信源译码', ...
    'HorizontalAlignment', 'center', 'FontSize', 12, 'FontWeight', 'bold');

rectangle('Position', modules.Destination, 'FaceColor', [0.9, 1, 0.8], 'EdgeColor', 'g');
text(modules.Destination(1)+modules.Destination(3)/2, modules.Destination(2)+modules.Destination(4)/2, '信宿', ...
    'HorizontalAlignment', 'center', 'FontSize', 12, 'FontWeight', 'bold');

% 绘制连接线
% 发送端连接线
plot([modules.Source(1)+modules.Source(3), modules.SourceEncoder(1)], ...
     [modules.Source(2)+modules.Source(4)/2, modules.SourceEncoder(2)+modules.SourceEncoder(4)/2], 'b-', 'LineWidth', 2);
plot([modules.SourceEncoder(1)+modules.SourceEncoder(3), modules.ChannelEncoder(1)], ...
     [modules.SourceEncoder(2)+modules.SourceEncoder(4)/2, modules.ChannelEncoder(2)+modules.ChannelEncoder(4)/2], 'b-', 'LineWidth', 2);
plot([modules.ChannelEncoder(1)+modules.ChannelEncoder(3), modules.Modulator(1)], ...
     [modules.ChannelEncoder(2)+modules.ChannelEncoder(4)/2, modules.Modulator(2)+modules.Modulator(4)/2], 'b-', 'LineWidth', 2);

% 信道到接收端连接线
plot([modules.WirelessChannel(1), modules.Demodulator(1)+modules.Demodulator(3)/2], ...
     [modules.WirelessChannel(2), modules.Demodulator(2)+modules.Demodulator(4)], 'g-', 'LineWidth', 2);
plot([modules.WirelessChannel(1)+0.2, modules.Demodulator(1)+modules.Demodulator(3)/2], ...
     [modules.WirelessChannel(2), modules.Demodulator(2)+modules.Demodulator(4)], 'g-', 'LineWidth', 2);
plot([modules.WirelessChannel(1)+0.4, modules.Demodulator(1)+modules.Demodulator(3)/2], ...
     [modules.WirelessChannel(2), modules.Demodulator(2)+modules.Demodulator(4)], 'g-', 'LineWidth', 2);

% 接收端内部连接线
plot([modules.Demodulator(1)+modules.Demodulator(3), modules.ChannelDecoder(1)], ...
     [modules.Demodulator(2)+modules.Demodulator(4)/2, modules.ChannelDecoder(2)+modules.ChannelDecoder(4)/2], 'g-', 'LineWidth', 2);
plot([modules.ChannelDecoder(1)+modules.ChannelDecoder(3), modules.SourceDecoder(1)], ...
     [modules.ChannelDecoder(2)+modules.ChannelDecoder(4)/2, modules.SourceDecoder(2)+modules.SourceDecoder(4)/2], 'g-', 'LineWidth', 2);
plot([modules.SourceDecoder(1)+modules.SourceDecoder(3), modules.Destination(1)], ...
     [modules.SourceDecoder(2)+modules.SourceDecoder(4)/2, modules.Destination(2)+modules.Destination(4)/2], 'g-', 'LineWidth', 2);

% 添加标题和说明
title('无线通信系统基本架构', 'FontSize', 16, 'FontWeight', 'bold');
text(0.5, 0.95, '发送端', 'HorizontalAlignment', 'center', 'FontSize', 14, 'FontWeight', 'bold', 'Color', 'b');
text(0.5, 0.05, '接收端', 'HorizontalAlignment', 'center', 'FontSize', 14, 'FontWeight', 'bold', 'Color', 'g');

%% 结果保存
fprintf('\n=== 结果保存 ===\n');

% 创建结果文件夹（在当前章节目录下）
if ~exist('results', 'dir')
    mkdir('results');
end

% 保存系统架构图
    try
        saveas(fig_architecture, 'results/wireless_system_architecture.png');
    catch
        % 如果saveas失败（可能是因为UI组件），使用exportapp
        exportapp(fig_architecture, 'results/wireless_system_architecture.png');
    end
    close(fig_architecture);

% 保存所有结果到当前章节目录
save('results/introduction_results.mat', 'results_evolution', 'results_tech');
fprintf('结果已保存到 Chapter01_Introduction/results 文件夹中\n');